
# _*_ coding:utf-8 _*_
import os
import xml.etree.ElementTree as ET


dirpath = r'I:\.Deep_Learning\磁瓦\裂纹截取\裂纹\output\按高宽比分类\1-高宽比大于4/'  # 原来存放xml文件的目录
newdir = r'H:\Deep_Learning\yolov4\darknet\build\darknet\x64\data\ciwa_duanmian\labels'  # 修改label后形成的txt目录

if not os.path.exists(newdir):
    os.makedirs(newdir)

S = []
s = open('1.txt', 'w')
M = []
m = open('2.txt', 'w')
L = []
l = open('3.txt', 'w')
i = 0
for fp in os.listdir(dirpath):
    if fp.endswith('.xml'):
        i = i + 1
        print(i)
        root = ET.parse(os.path.join(dirpath, fp)).getroot()

        xmin, ymin, xmax, ymax = 0, 0, 0, 0
        sz = root.find('size')
        width = float(sz[0].text)
        height = float(sz[1].text)
        filename = root.find('filename').text
        if not root.findall('object'):
            print(fp)
            break
        for child in root.findall('object'):  # 找到图片中的所有框
            name = child.findtext('name')
            print(name)
            if name == ('S'):
                S.append(fp)
                s.write(fp + '\n')
            elif name == ('M'):
                M.append(fp)
                m.write(fp +'\n')
            elif name == ('L'):
                L.append(fp)
                l.write(fp + '\n')
            # elif name == ('liewen'):
            #     a = 1
            # elif name == ('wuzi'):
            #     a = 2
            # elif name == ('daojiaoyichang'):
            #     a = 5
            # elif name == ('qianmo'):
            #     a = 6
            # elif name == ('qikong'):
            #     a = 7
            # elif name == ('tudain'):
            #     a = 8
            # elif name == ('jiejing'):
            #     a = 9
            # elif name == ('ok'):
            #     a = 10
            else :
                print("出现错误" + str(name))
            # sub = child.find('bndbox')  # 找到框的标注值并进行读取
            # xmin = float(sub[0].text)
            # ymin = float(sub[1].text)
            # xmax = float(sub[2].text)
            # ymax = float(sub[3].text)
            # try:  # 转换成yolov3的标签格式，需要归一化到（0-1）的范围内
            #     x_center = (xmin + xmax) / (2 * width)
            #     y_center = (ymin + ymax) / (2 * height)
            #     w = (xmax - xmin) / width
            #     h = (ymax - ymin) / height
            # except ZeroDivisionError:
            #     print(filename, '的 width有问题')

            # with open(os.path.join(newdir, fp.split('.')[0] + '.txt'), 'a+') as f:
            #     f.write(' '.join([str(a), str(x_center), str(y_center), str(w), str(h) + '\n']))

print('S 类的个数：\t', len(S))
print('M 类的个数：\t', len(M))
print('L 类的个数：\t', len(L))